package com.ajocer.springbootinit.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 接口限流注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimit {
    
    /**
     * 限流的唯一标识，默认为空，将使用类名+方法名
     */
    String key() default "";
    
    /**
     * 时间窗口，单位为秒
     */
    int timeWindow() default 1;
    
    /**
     * 限流阈值，在timeWindow时间内允许通过的请求数
     */
    int limit() default 10;
    
    /**
     * 获取令牌的超时时间，单位为毫秒
     */
    int timeoutMs() default 0;
    
    /**
     * 限流描述
     */
    String description() default "";
} 